/**
 * 日志工具
 * 提供统一的日志输出接口，方便后续扩展（如添加日志上报等功能）
 */

// 判断当前环境
const isDev = process.env.NODE_ENV === 'development'

/**
 * 日志级别枚举
 */
export const LogLevel = {
  DEBUG: 'debug',
  INFO: 'info',
  WARN: 'warn',
  ERROR: 'error'
}

/**
 * 日志工具类
 */
class Logger {
  /**
   * 输出调试日志（仅在开发环境下输出）
   * @param {string} message - 日志消息
   * @param  {...any} args - 其他参数
   */
  debug(message, ...args) {
    if (isDev) {
      console.debug(`[DEBUG] ${message}`, ...args)
    }
  }
  
  /**
   * 输出信息日志
   * @param {string} message - 日志消息
   * @param  {...any} args - 其他参数
   */
  info(message, ...args) {
    console.info(`[INFO] ${message}`, ...args)
  }
  
  /**
   * 输出警告日志
   * @param {string} message - 日志消息
   * @param  {...any} args - 其他参数
   */
  warn(message, ...args) {
    console.warn(`[WARN] ${message}`, ...args)
  }
  
  /**
   * 输出错误日志
   * @param {string} message - 日志消息
   * @param {Error|string} error - 错误对象或错误消息
   * @param  {...any} args - 其他参数
   */
  error(message, error, ...args) {
    console.error(`[ERROR] ${message}`, error, ...args)
    
    // 这里可以添加错误上报逻辑
    this.reportError(message, error)
  }
  
  /**
   * 上报错误（可根据需要实现）
   * @param {string} message - 错误消息
   * @param {Error|string} error - 错误对象或错误消息
   */
  reportError(message, error) {
    // 这里可以添加错误上报到服务器的逻辑
    // 例如使用Sentry等工具
  }
  
  /**
   * 记录API请求日志
   * @param {string} method - 请求方法
   * @param {string} url - 请求URL
   * @param {Object} params - 请求参数
   */
  logApiRequest(method, url, params) {
    if (isDev) {
      console.debug(`[API] ${method} ${url}`, params)
    }
  }
  
  /**
   * 记录API响应日志
   * @param {string} method - 请求方法
   * @param {string} url - 请求URL
   * @param {Object} response - 响应数据
   */
  logApiResponse(method, url, response) {
    if (isDev) {
      console.debug(`[API] ${method} ${url} Response:`, response)
    }
  }
  
  /**
   * 记录API错误日志
   * @param {string} method - 请求方法
   * @param {string} url - 请求URL
   * @param {Error} error - 错误对象
   */
  logApiError(method, url, error) {
    console.error(`[API] ${method} ${url} Error:`, error)
    
    // 这里可以添加API错误上报逻辑
    this.reportError(`API Error: ${method} ${url}`, error)
  }
}

// 导出日志工具实例
export const logger = new Logger() 